#ifndef __DYNAMICARRAY_H_
#define __DYNAMICARRAY_H_

#include <stdbool.h>

typedef void* ElementType ;  //通用化

struct  DynamicArray;//前置声明

typedef struct DynamicArray DArray;

//创建一个动态数组
DArray* InitDArray(int capacity);

//释放动态数组
void FreeDArray(DArray *a );


//插入数据
bool InsertTail(DArray *a,ElementType element);

//打印数组
void PrintArray(DArray * a,void (*print)(ElementType));

//删除数组
void RemoveByIndex(DArray *a, int index);

//按照值删除数组
void RemoveByElement(DArray *a, ElementType element);

//查找某元素
ElementType FindByElement((DArray* a),ElementType element,bool (*find)(ElementType));

void DArrayFastSort(DArray *a, bool(*SortPtr)(ElementType,ElementType));

#endif